package com.project.collectAPI.entity.MulitAddClass;


import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.project.collectAPI.comm.SpiderTools;
import com.project.collectAPI.entity.MeiTuan.MeituanGoods;
import com.project.collectAPI.entity.MeiTuan.SystemParam;
import lombok.Data;
import org.apache.http.client.config.RequestConfig;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;

@Data
/*批量添加商品分类API*/
/* https://tscc.meituan.com/home/docDetail/812 */
public class MulitAddClass {

    private String reqAPI="https://waimaiopen.meituan.com/api/v1/retailCat/batchUpdateSpuCategoryRelationship";


    //APP方门店id，即商家中台系统里门店的编码。如商家在操作绑定门店至开放平台应用中时，未绑定三方门店id信息，则默认APP方门店id与美团门店id相同。
    //【必填】
    private String app_poi_code;

    //【必须】
    //1-新增，2-替换，3-删除
    private int operate_type;

    //【必填】
    //（原app_food_code字段）APP方商品id，即商家中台系统里商品的编码（spu_code值）：
    // (1) 不同门店之间商品id可以重复，同一门店内商品id不允许重复；
    // (2)字段信息限定长度不超过128个字符。 不能超过50个商品（多个app_spu_code用英文逗号隔开
    //示例值： 17386,1283,2134
    private String app_spu_codes;


    // json数组字符串，最多50个 [ 必填 ]
    private List<CategorySequenceData> category_sequence_data;


    @Data
    public static class CategorySequenceData{

        //商品分类code
        //示例值： 适用对象
        private String category_code;

        //sequence和smart_switch至少有一个
        //商品分类的排序：
        // (1)数字越小，排位越靠前；
        // (2)适用所有分类
        private int sequence;

    } //commonAttrClass End


    //统一的时间戳
    private String app_id;

    //统一的时间戳
    private Long timestamp;

    //签名
    private String signValue;


    /*批量创建接口签名*/
    public String getSign() throws Exception {
        SystemParam systemParam=new SystemParam();
        Map<String,Object> map=new HashMap<>();
        //System.out.println("getSign() SystemParam.timestamp===>"+timestamp);
        map.put("timestamp",timestamp);  //timestamp尽量统一用一次
        map.put("app_id",systemParam.getAppId());
        map.put("app_poi_code",app_poi_code);
        map.put("category_sequence_data",category_sequence_data);
        return systemParam.getSign(map,reqAPI); //获取签名
    }


    /*请求*/
    public String startMulitClassAdd() throws Exception {
        SystemParam systemParam=new SystemParam();
        ObjectMapper objectMapper = new ObjectMapper();
        //Post请求2
        Map<String, String> applicationParamsMap=new HashMap<>();
        applicationParamsMap.put("app_id",systemParam.getAppId());
        applicationParamsMap.put("timestamp",String.valueOf(timestamp));
        applicationParamsMap.put("sig",signValue);
        applicationParamsMap.put("app_poi_code",app_poi_code); //店铺id
        String category2JSON = objectMapper.writeValueAsString(category_sequence_data); // 字符串转json
        applicationParamsMap.put("category_sequence_data", category2JSON);

        RequestConfig.Builder requestConfigBuilder = RequestConfig.custom();
        // ConnectTimeout:连接超时.连接建立时间，三次握手完成时间.
        requestConfigBuilder.setConnectTimeout( 30000* 1000);
        String res= SpiderTools.requestOfPost(reqAPI, applicationParamsMap,requestConfigBuilder);
        System.out.println("请求参数:");
        System.out.println(applicationParamsMap);
        System.out.println("startMulitClassAddt添加多分类结果================>");
        System.out.println(res);
        JSONObject rct=JSONObject.parseObject(res);
        String data= (!Objects.isNull(rct.get("data")))?rct.getString("data"):null;
        return data;
    }


} //Class End
